Configuration Manager
Use the Configuration Manager page as a single destination to configure everything that exists in MAX Flight Software. This user interface gives you a great deal of flexibility and power to ensure the complexity of the software is not lost, but it comes at the expense of speed and ease of use. To effectively make use of this page for configuration, you need to have an understanding of how the flight software is put together.
Terms
The Configuration Manager generates configuration (*.cfg
) files that are separated into three categories: Flight Software (FSW), ODySSy (ODY), and SOLIS (SOL). Each category contains a Table of Contents (_TOC.cfg
) file that calls all of the other files. With the exception of the _UnitSpecific.cfg
files, SOLIS will write these config files each time a simulation is run.
*_UnitSpecific.cfg
file is intentionally called last so that you can manually make modifications to it that will not be overwritten.You will see the following terms within these files, so it is important that you have a general understanding of them all.
Component
The fundamental element of MAX Flight Software is the configurable component. A configurable component is an instance of a C++ object that is configured by and accessible to the configuration system, able to accept commands, and produce telemetry. Components exist inside of subsystems.
Subsystem
Subsystems contain components and provide the context for a component's creation and control their priority and rate of execution. Although it is not always necessary for a subsystem to iterate, the execution rate is displayed next to the ones that do.
Subsystems also provide logical separation between various functions of the flight software. For now, subsystems are fixed, but you can create and instantiate custom components, as well as instantiate the components that ship with SOLIS.
Configuration
All of the subsystems and components exist within a given configuration. SOLIS automatically generates a "safe" base configuration called <SOLIS-Generated>. This particular configuration is accessible via the Configuration dropdown menu at the top-left of the Configuration Manager page. This configuration is directly tied to your setting in the rest of the SOLIS UI and cannot be changed or edited. To add or edit any subsystems or components, you must create a new configuration. You can do this by clicking Copy next to the Configuration dropdown menu.
Factory
A factory is a method for handling the creation of a particular component type. Factories can create multiple instances of a component type, as illustrated.
Version
Each component can have multiple versions. The configuration determines what version of each component is selected (active). Within a version, different functions, interface connections, and parameters can be configured.
Working together: configurations, components and versions
SOLIS-Generated Configuration
When SOLIS is first initialized for a satellite, it creates a default configuration. This configuration contains components that are automatically generated by SOLIS. Each of these components has only one version. SOLIS creates the components from the factories of the system.
Multiple Configurations
A satellite in an STK scenario can have one or more configurations under SOLIS. Each configuration can contain any number of components of various types. Below is a simple example of a scenario with a single satellite with Configurations X and Y. The satellite has three factories that create one component each; there is only one instance of each component type. Component A has four versions: the default SOLIS-generated one, and three user-created versions. Components B and C also each have the default SOLIS-generated version, but Component B has two additional user-created versions.
- In Configuration X, Version i of Component A is active, Version i of Component B is active, and the SOLIS-generated version of Component C is active.
- In Configuration Y, Version iii of Component A is active, the SOLIS-generated version of Component B is active, and Component C is not included. So, Configuration Y only has two components.
You can create more components in either configuration from any of the three factories. However, these new component instances will not have a SOLIS-generated version.
Below is an image from the SOLIS Configuration Manager page, which shows the list of components in the system for a configuration called Config1. The component names in gray font in the list on the left are components that have been generated automatically by SOLIS and therefore have only one version. The ones in black, italicized font are components that have at least one user-created version.
In the image, Component MGR_ODySSy is selected. To the right, you can see in the Component Version dropdown menu that the component has two user-created versions, Version1 and Version2. Selecting <Not Included> from the dropdown menu would exclude the component from the configuration.
The buttons at the top of the page provide additional details about each configuration set.
Configuration Overview
The Configuration Overview window shows the whole configuration in a single view. This is useful when determining what to set for the MasterID and Priority of a new component.
Parameter details
For a comprehensive list of all available parameters for a specified Configuration Set with units and descriptions, click . You can specify whether you want to see Flight Software Parameters, ODySSy Parameters, or Both. You can then save these parameters externally as a report in a CSV file.
Component configuration system
There are three steps to set up the flight software: create, connect, and configure. The create step is for instantiating components and then allocating their memory, establishing a subsystem association, and setting the most basic software-centric configuration. Once you create components, you can connect them. Once connected, you can configure them to define all the inputs of each component.
Create
Create a component by clicking Add next to the version dropdown menu.
Parameter | Description |
---|---|
Subsystem | Specifies the subsystem that this component belongs to, inherited from the selected subsystem in Configuration Manager. |
Factory Type | Enter the name of the component type, sometimes also referred to as "Factory Name". |
Instance Name | Enter the name of the instance of the component. Some components commonly have multiple instances, such as a reaction wheel or a star tracker. |
Version Name | Each instance of a component can have multiple versions. This is useful for trade studies where you may be evaluating two different star trackers. |
Output File | The purpose of the Configuration System is to generate configuration files that serve as the mechanism for the input deck for the flight software. This parameter enables you to choose which config file this component's configuration is output to. |
Master ID | The Master ID is the numeric identity of this component. It must be unique amongst all the components for the flight software to function properly. To aid in determining which MasterID's are already taken, use the Configuration Overview. |
Priority | The priority is what handles the order of execution in the subsystem. Lower numbers execute first. A list of all the priorities of existing components is available in the Configuration Overview. |
CmdTlm Prefix | This is the prefix that goes in front of the command and telemetry mnemonics to make them unique from other instances of the same type of component. |
Long Name | This is the Long Name prefix for the telemetry. This is what becomes the Packet Name in the Telemetry Management Page page. |
Group Name | This is the Group that this telemetry belongs to, which is purely for organizational purposes in the Telemetry Management Page page. |
Connect
Setting up connections between components requires two things:
- The component being configured has a pointer that can point to another object's implemented interface.
- There is another component that has been instantiated that implements the specified interface.
For example, the component FSW_ActProc_RW_Reaction_Wheels_Set
has a connection point Connection_HWR_ActMgr_RW
, and the object HWR_ActMgr_RW
implements that interface. The name of the accessor in that object that returns that pointer is HWR_ActMgr_RW
. The UI has a complete index of all the pointers that each component has, as well as the objects and interfaces they can connect to, so the UI will present you with all the options that are available to you. If there is only one possibility, it will populate in automatically.
Parameter | Description |
---|---|
Connection Name | This is the name of the connection pointer in the component that is currently being configured. |
Connected Component | This is the name of the component that implements the interface of the type of the connection pointer selected. |
Accessor | This is the config name of the implementation of the interface. |
Type | There are two types, Parameter and Function. There are some legacy connections that use functions to make the connection. For all future development will use Parameter. |
Comment | This is the comment associated with this connection. |
Configure
There are two ways of setting parameters in your component. The first is with a configuration parameter. The other is with configuration functions that can take two or more parameters per function call.Configuration parameter
Configuration parameters are able to set all the basic types: Enum, Boolean, Double, Filter, Integer, Matrix, Vector, Quaternion, and String. The Configuration Manager page keeps knowledge of the configuration type of each parameter, so the value editor presented will display the correct type for configuration.
Parameter | Description |
---|---|
Section | This is the section that this configuration parameter will be set in. Sections are useful if something has an interdependency that requires one item to be set before another. In this case, specifying a higher section number for an item will set it later. In general, the section defaults to zero. |
Use Connection | This item lets you pull a value that is configured somewhere else. So, if you need two components to match, configuring the other component with a value in the typical way and then configuring this component to point to that component will make that happen. Since the order within sections is not guaranteed, it is important that the component with the direct value configuration is set to a lower number section so that it is configured first. |
Parameter Name | Identifies the parameter being configured. |
Value | Specifies the value that the parameter is being set to. If the Use Connection check box is selected, then the upper dropdown menu selection is the component and the lower dropdown menu selection is the accessor. If it is an indexed accessor, the index will become visible and enabled. |
Configuration functions
Typically, parameters that you can set two or more times are implement with a configuration function. For example, add a reaction wheel via function to the mixing component, since the reaction wheel mixing is set up to work with any number of reaction wheels. Also, just like the Parameter Dialog, each argument that you click will present the correct editor to edit the value.
If you are configuring a component with a function that you created, then a function has been created in the *.cpp
file associated with your component. That function will be invoked with the arguments you give it. Additionally, a configuration function will configure a container, but all of the data management is taken care of for you.
Parameter | Description |
---|---|
Section | This is the section that this function is invoked in. Similar to the parameter settings above, section numbers are useful to ensure the order of the parameters being set. However, there is no enforcement of the order in which parameters are configured within a specific section. |
Function Name | Specifies the name of the function being invoked. |
Arguments | This is a list of the arguments in the function. |
Type | This is a read only display of the type of the selected argument. |
Use Connection | Not pictured, this enables you to set the argument value based on a previously configured parameter. Make sure that the parameter used has been configured in a lower numbered section. |
Value | Specify the value of the selected argument. Like above, if the Use Connection check box is selected, then the upper dropdown menu selection is the component and the lower dropdown menu selection is the accessor. If it is an indexed accessor, the index will become visible and enabled. |